var prompt = require('sync-prompt').prompt; //pour les entrées utilisateurs
var mysql = require('mysql'); //pour la connection à la base SQL

//MENU
console.log("***********************************************");
console.log("***************      BIENVENUE    *************");
console.log("***********************************************\n");
console.log("1)Créer un rendez vous");
console.log("2)Voir le planning");
console.log("3)Consulter le volume horaire");
console.log("4)Importer au format CSV");
console.log("5)Exporter au format CSV");
console.log("6)Importer au format iCal");
console.log("7)Exporter au format iCal\n");

console.log("Choisissez une action:");
lireClavier();

function connexion(){
  var db_connect = mysql.createConnection({
      host     : '127.0.0.1',
      port: '8889',
      user     : 'root',
      password : 'root',
      database:'projetgl02'
    });
  return db_connect;
}

function lireClavier(){
  process.stdin.resume(); //initialiser la lecture;
  process.stdin.setEncoding('utf8');

  process.stdin.on('data', function (lecture) {
  
  if (lecture==1)creerPlanning(); 
  else if (lecture==2)afficherRendezVous();
  else if (lecture==3)volumeHoraire(); //Fonction à insérer ici
  else if (lecture==4)console.log(lecture); //Fonction à insérer ici
  else if (lecture==5)exportCSV(); //Fonction à insérer ici
  else if (lecture==6)console.log(lecture); //Fonction à insérer ici
  else if (lecture==7)console.log(lecture); //Fonction à insérer ici
  else console.log("Cette fonction n'existe pas !");
  
  });
}

//FONCTIONS:
function afficherRendezVous(){
    var db_connexion = connexion();
    db_connexion.connect();
    db_connexion.query('SELECT * FROM rendezVous', function(err, rows, fields) {
      //if (err) throw err;

      console.log('', rows);
    });
    db_connexion.end();
}

function volumeHoraire(){
    var db_connexion = connexion();
    db_connexion.connect();
    db_connexion.query('SELECT SUM((heureDebut-heureFin))/-10000 as volume FROM rendezVous', function(err, rows, fields) {
      //if (err) throw err;

    console.log('Le volume horaire est de' + rows[0].volume + 'heures');
    });
    db_connexion.end();
}

function exportCSV () {
  var db_connexion = connexion();
  db_connexion.connect();

  var fs = require("fs");
  var stream = fs.createWriteStream("rendezVous.csv");
  stream.write("nom;id;dateDebut;dateFin;heureDebut;heureFin\n");
  
  db_connexion.query('SELECT * FROM rendezVous',function(err,rows,fields) {
    for(var i = 0 ; i < rows.length ; i++){
      stream.write(rows[i].nom + ";" + rows[i].id + ";" + rows[i].dateDebut + ";" + rows[i].dateFin + ";" + rows[i].heureDebut + ";" + rows[i].heureFin + "\n");
    }
    stream.end();
    if (err) throw err;
    else console.log("Export effectuée !");
  });
}

function creerPlanning(){
    
    var db_connexion = connexion();
    db_connexion.connect();

    var nom = prompt('Donner un nom à votre événement:');
    var dateDebut = prompt('Donner sa date de début (ex 2014-11-25): ');
    //verification
    verfierDate(dateDebut);
    var dateFin = prompt('Donner sa date de fin: ');
    //verification
    verfierDate(dateFin);
    var heureDebut = prompt('Donner son heure de début (ex 11:00:00):');
    //verification
    verifierHeure(heureDebut);
    var heureFin = prompt('Donner son heure de fin: ');
    //verification
    verifierHeure(heureFin);

    //INSERTION
    if(nom =='' || dateDebut=='' || dateFin=='' || heureDebut=='' || heureFin==''){
    console.log("Les champs sont vides !");
    }
    else {
    db_connexion.query('INSERT INTO rendezVous (nom,dateDebut,dateFin,heureDebut,heureFin) VALUES (\''+nom+'\',\''+dateDebut+'\',\''+dateFin+'\',\''+heureDebut+'\',\''+heureFin+'\')');
    console.log("Félicitation, événement ajouté !");
    }

    db_connexion.end();
}
function verfierDate(date){
  var myRegex = /^[0-9]{4}\-[0-9]{2}\-[0-9]{1,2}$/;
    while(myRegex.test(date)==false)var date = prompt('Attention à la forme (ex 2014-11-25): ');
}
function verifierHeure(heure){
  var myRegex = /^[0-9]{2}\:[0-9]{2}\:[0-9]{2}$/;
    while(myRegex.test(heure)==false)var heure = prompt('Attention à la forme (ex 11:00:00): ');
}

}